Simple Copy

복제 대상 객체의 모든 항목이 값으로 되어 있다면, 복사하는데 문제가 되지 않는다.
struct Address{
string street, city;
int suite;
};
struct Contact{
string name;
Address address;
};
//
Contact worker{"", Address{"123 East Dr", "London", 0}};
//
Contact john=worker;
john.name="John Doe";
john.address.suite=10;
하지만, 내부의 객체가 포인터로 된 경우가 실제로는 더 많다.
struct Contact{
string name;
Address* address; // or shared_ptr
};
포인터를 포함하는 클래스에서 값으로 복사할 경우,
jogn(인스턴스)을 수정하면, 프로토타입 객체가 수정될 수 있다.

포인터를 포함하는 클래스는 복사시에 깊은 복사(deep copy)까지 지원해야 하기 때문에,
사용자가 복사생성자를 따로 생성해야 한다.